{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "sns.set()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2016-11-02</td>\n",
       "      <td>778.200012</td>\n",
       "      <td>781.650024</td>\n",
       "      <td>763.450012</td>\n",
       "      <td>768.700012</td>\n",
       "      <td>768.700012</td>\n",
       "      <td>1872400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2016-11-03</td>\n",
       "      <td>767.250000</td>\n",
       "      <td>769.950012</td>\n",
       "      <td>759.030029</td>\n",
       "      <td>762.130005</td>\n",
       "      <td>762.130005</td>\n",
       "      <td>1943200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2016-11-04</td>\n",
       "      <td>750.659973</td>\n",
       "      <td>770.359985</td>\n",
       "      <td>750.560974</td>\n",
       "      <td>762.020020</td>\n",
       "      <td>762.020020</td>\n",
       "      <td>2134800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2016-11-07</td>\n",
       "      <td>774.500000</td>\n",
       "      <td>785.190002</td>\n",
       "      <td>772.549988</td>\n",
       "      <td>782.520020</td>\n",
       "      <td>782.520020</td>\n",
       "      <td>1585100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2016-11-08</td>\n",
       "      <td>783.400024</td>\n",
       "      <td>795.632996</td>\n",
       "      <td>780.190002</td>\n",
       "      <td>790.510010</td>\n",
       "      <td>790.510010</td>\n",
       "      <td>1350800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>2016-11-09</td>\n",
       "      <td>779.940002</td>\n",
       "      <td>791.226990</td>\n",
       "      <td>771.669983</td>\n",
       "      <td>785.309998</td>\n",
       "      <td>785.309998</td>\n",
       "      <td>2607100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>2016-11-10</td>\n",
       "      <td>791.169983</td>\n",
       "      <td>791.169983</td>\n",
       "      <td>752.179993</td>\n",
       "      <td>762.559998</td>\n",
       "      <td>762.559998</td>\n",
       "      <td>4745200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>2016-11-11</td>\n",
       "      <td>756.539978</td>\n",
       "      <td>760.780029</td>\n",
       "      <td>750.380005</td>\n",
       "      <td>754.020020</td>\n",
       "      <td>754.020020</td>\n",
       "      <td>2431800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>2016-11-14</td>\n",
       "      <td>755.599976</td>\n",
       "      <td>757.849976</td>\n",
       "      <td>727.539978</td>\n",
       "      <td>736.080017</td>\n",
       "      <td>736.080017</td>\n",
       "      <td>3631700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>2016-11-15</td>\n",
       "      <td>746.969971</td>\n",
       "      <td>764.416016</td>\n",
       "      <td>746.969971</td>\n",
       "      <td>758.489990</td>\n",
       "      <td>758.489990</td>\n",
       "      <td>2384000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Date        Open        High         Low       Close   Adj Close  \\\n",
       "0  2016-11-02  778.200012  781.650024  763.450012  768.700012  768.700012   \n",
       "1  2016-11-03  767.250000  769.950012  759.030029  762.130005  762.130005   \n",
       "2  2016-11-04  750.659973  770.359985  750.560974  762.020020  762.020020   \n",
       "3  2016-11-07  774.500000  785.190002  772.549988  782.520020  782.520020   \n",
       "4  2016-11-08  783.400024  795.632996  780.190002  790.510010  790.510010   \n",
       "5  2016-11-09  779.940002  791.226990  771.669983  785.309998  785.309998   \n",
       "6  2016-11-10  791.169983  791.169983  752.179993  762.559998  762.559998   \n",
       "7  2016-11-11  756.539978  760.780029  750.380005  754.020020  754.020020   \n",
       "8  2016-11-14  755.599976  757.849976  727.539978  736.080017  736.080017   \n",
       "9  2016-11-15  746.969971  764.416016  746.969971  758.489990  758.489990   \n",
       "\n",
       "    Volume  \n",
       "0  1872400  \n",
       "1  1943200  \n",
       "2  2134800  \n",
       "3  1585100  \n",
       "4  1350800  \n",
       "5  2607100  \n",
       "6  4745200  \n",
       "7  2431800  \n",
       "8  3631700  \n",
       "9  2384000  "
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./dataset/rlData.csv')\n",
    "df.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "close = df.Close.values.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import deque\n",
    "import random\n",
    "\n",
    "\n",
    "class Agent:\n",
    "    def __init__(self, state_size, window_size, trend, skip, batch_size):\n",
    "        self.state_size = state_size\n",
    "        # 窗口区间的状态（卖价差）为有效状态\n",
    "        self.window_size = window_size\n",
    "        self.half_window = window_size / 2\n",
    "        self.trend = trend\n",
    "        self.skip = skip\n",
    "        self.action_size = 3\n",
    "        self.batch_size = batch_size\n",
    "        # 双向队列：先进先出\n",
    "        self.memory = deque(maxlen = 1000)\n",
    "        self.inventory = []\n",
    "\n",
    "        self.gamma = 0.95\n",
    "        self.epsilon = 0.5\n",
    "        self.epsilon_min = 0.01\n",
    "        self.epsilon_decay = 0.999\n",
    "\n",
    "        tf.reset_default_graph()\n",
    "        self.sess = tf.InteractiveSession()\n",
    "        self.X = tf.placeholder(tf.float32, [None, self.state_size])\n",
    "        # 预测使得奖励最大的动作\n",
    "        self.Y = tf.placeholder(tf.float32, [None, self.action_size])\n",
    "        # 网络结构：训练网络的参数\n",
    "        layer1 = tf.layers.dense(self.X, 256, activation = tf.nn.relu)\n",
    "        layer2 = tf.layers.dense(layer1, 64, activation = tf.nn.relu)\n",
    "        self.logits = tf.layers.dense(layer2, self.action_size)\n",
    "        \n",
    "        self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
    "        self.optimizer = tf.train.GradientDescentOptimizer(1e-5).minimize(\n",
    "            self.cost\n",
    "        )\n",
    "        self.sess.run(tf.global_variables_initializer())\n",
    "\n",
    "    def get_action(self, state):\n",
    "        # epsilon-greedy 采样策略进行动作选择\n",
    "        # Deep Q Learning中的评估策略不一致，因此Q Learning是off-policy\n",
    "        if random.random() <= self.epsilon:\n",
    "            return random.randrange(self.action_size)\n",
    "        # 注意：这里为什么要在更新后的Q表中选址q值最大的动作？\n",
    "        return np.argmax(\n",
    "            self.sess.run(self.logits, feed_dict = {self.X: state})[0]\n",
    "        )\n",
    "    \n",
    "    def get_state(self, t):\n",
    "        # 这里为什么要设置窗口？\n",
    "        # 这里是结合业务场景很重要的地方\n",
    "        window_size = self.window_size + 1\n",
    "        d = t - window_size + 1\n",
    "        block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
    "        res = []\n",
    "        for i in range(window_size - 1):\n",
    "            res.append(block[i + 1] - block[i])\n",
    "        return np.array([res])\n",
    "\n",
    "    def replay(self, batch_size):\n",
    "        # 从经验池拿数据进行训练\n",
    "        mini_batch = []\n",
    "        l = len(self.memory)\n",
    "        for i in range(l - batch_size, l):\n",
    "            mini_batch.append(self.memory[i])\n",
    "        replay_size = len(mini_batch)\n",
    "        X = np.empty((replay_size, self.state_size))\n",
    "        Y = np.empty((replay_size, self.action_size))\n",
    "        # 注意mini_batch里的每条记录存的是什么\n",
    "        # (state, action, reward(invest), next_state, 投资是否成功判断（starting_money < initial_money）)\n",
    "        states = np.array([a[0][0] for a in mini_batch])\n",
    "        new_states = np.array([a[3][0] for a in mini_batch])\n",
    "        Q = self.sess.run(self.logits, feed_dict = {self.X: states})\n",
    "        Q_new = self.sess.run(self.logits, feed_dict = {self.X: new_states})\n",
    "        # 这里体现了Deep Q Learning中的网络学习与 RL 中的更新怎么联系起来的\n",
    "        for i in range(len(mini_batch)):\n",
    "            state, action, reward, next_state, done = mini_batch[i]\n",
    "            # target其实就是Q表\n",
    "            # self.logits = tf.layers.dense(feed, self.action_size)\n",
    "            target = Q[i]\n",
    "            target[action] = reward\n",
    "            # 更新Q表：投资收益为正的情况下\n",
    "            if not done:\n",
    "                target[action] += self.gamma * np.amax(Q_new[i])\n",
    "            X[i] = state\n",
    "            Y[i] = target\n",
    "        cost, _ = self.sess.run(\n",
    "            [self.cost, self.optimizer], feed_dict = {self.X: X, self.Y: Y}\n",
    "        )\n",
    "        if self.epsilon > self.epsilon_min:\n",
    "            self.epsilon *= self.epsilon_decay\n",
    "        return cost\n",
    "    \n",
    "    # 这里是模拟实盘操作\n",
    "    def operate(self, initial_money):\n",
    "        starting_money = initial_money\n",
    "        states_sell = []\n",
    "        states_buy = []\n",
    "        inventory = []\n",
    "        state = self.get_state(0)\n",
    "        # 可以模拟日线/周线\n",
    "        for t in range(0, len(self.trend) - 1, self.skip):\n",
    "            action = self.get_action(state)\n",
    "            next_state = self.get_state(t + 1)\n",
    "            \n",
    "            if action == 1 and initial_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
    "                inventory.append(self.trend[t])\n",
    "                initial_money -= self.trend[t]\n",
    "                states_buy.append(t)\n",
    "                print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
    "                \n",
    "                \n",
    "            elif action == 2 and len(inventory):\n",
    "                bought_price = inventory.pop(0)\n",
    "                initial_money += self.trend[t]\n",
    "                states_sell.append(t)\n",
    "                try:\n",
    "                    invest = ((close[t] - bought_price) / bought_price) * 100\n",
    "                except:\n",
    "                    invest = 0\n",
    "                print(\n",
    "                    'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
    "                    % (t, close[t], invest, initial_money)\n",
    "                )\n",
    "            \n",
    "            state = next_state\n",
    "        invest = ((initial_money - starting_money) / starting_money) * 100\n",
    "        total_gains = initial_money - starting_money\n",
    "        return states_buy, states_sell, total_gains, invest\n",
    "        \n",
    "    def train(self, iterations, checkpoint, initial_money):\n",
    "        for i in range(iterations):\n",
    "            total_profit = 0\n",
    "            inventory = []\n",
    "            state = self.get_state(0)\n",
    "            starting_money = initial_money\n",
    "            # 怎么去使用数据\n",
    "            for t in range(0, len(self.trend) - 1, self.skip):\n",
    "                # 根据当前状态做出决策\n",
    "                action = self.get_action(state)\n",
    "                # 到下一个状态，下一状态在这个场景里是如何构建起来的？\n",
    "                next_state = self.get_state(t + 1)\n",
    "                \n",
    "                # 买动作会影响自己股票的库存和余额\n",
    "                if action == 1 and starting_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
    "                    inventory.append(self.trend[t])\n",
    "                    starting_money -= self.trend[t]\n",
    "                \n",
    "                # 卖动作是在有股票库存的前提下，会影响余额，并造成收益，而收益与设置Reward有关\n",
    "                elif action == 2 and len(inventory) > 0:\n",
    "                    # 买入价是仓库里最先买入的，有点类似队列的思想：先进先出\n",
    "                    bought_price = inventory.pop(0)\n",
    "                    total_profit += self.trend[t] - bought_price\n",
    "                    starting_money += self.trend[t]\n",
    "                    \n",
    "                # 单步投资收益作为Reward，当然现实场景中不可能把Reward设置得这么简单直接\n",
    "                # 应该将累积收益也考虑进来\n",
    "                invest = ((starting_money - initial_money) / initial_money)\n",
    "                # 设置经验池的目的是什么？提示：从过去的经验中学习\n",
    "                # 既打乱了经历之间的相关性，也使得神经网络更新更有效率\n",
    "                self.memory.append((state, action, invest, \n",
    "                                    next_state, starting_money < initial_money))\n",
    "                \n",
    "                # 状态更新为什么在这里做？\n",
    "                state = next_state\n",
    "                batch_size = min(self.batch_size, len(self.memory))\n",
    "                cost = self.replay(batch_size)\n",
    "            if (i+1) % checkpoint == 0:\n",
    "                print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
    "                                                                                  starting_money))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\application\\anaconda3\\envs\\qchen\\lib\\site-packages\\tensorflow\\python\\client\\session.py:1711: UserWarning: An interactive session is already active. This can cause out-of-memory errors in some cases. You must explicitly call `InteractiveSession.close()` to release resources held by the other session(s).\n",
      "  warnings.warn('An interactive session is already active. This can '\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 10, total rewards: 511.734804.3, cost: 0.520588, total money: 10511.734804\n",
      "epoch: 20, total rewards: 575.864812.3, cost: 0.368490, total money: 10575.864812\n",
      "epoch: 30, total rewards: 667.714909.3, cost: 0.284411, total money: 10667.714909\n",
      "epoch: 40, total rewards: 631.414796.3, cost: 0.219804, total money: 10631.414796\n",
      "epoch: 50, total rewards: 693.514772.3, cost: 0.185937, total money: 10693.514772\n",
      "epoch: 60, total rewards: 445.754762.3, cost: 0.138131, total money: 10445.754762\n",
      "epoch: 70, total rewards: 433.454774.3, cost: 0.166251, total money: 10433.454774\n",
      "epoch: 80, total rewards: 627.314821.3, cost: 0.103370, total money: 10627.314821\n",
      "epoch: 90, total rewards: 530.414859.3, cost: 0.090792, total money: 10530.414859\n",
      "epoch: 100, total rewards: 689.824771.3, cost: 0.087163, total money: 10689.824771\n",
      "epoch: 110, total rewards: 695.544863.3, cost: 0.062636, total money: 10695.544863\n",
      "epoch: 120, total rewards: 661.224855.3, cost: 0.053898, total money: 10661.224855\n",
      "epoch: 130, total rewards: 663.994817.3, cost: 0.062070, total money: 10663.994817\n",
      "epoch: 140, total rewards: 530.774966.3, cost: 0.045011, total money: 10530.774966\n",
      "epoch: 150, total rewards: 591.834779.3, cost: 0.033897, total money: 10591.834779\n",
      "epoch: 160, total rewards: 634.044740.3, cost: 0.030235, total money: 10634.044740\n",
      "epoch: 170, total rewards: 407.864809.3, cost: 0.036160, total money: 10407.864809\n",
      "epoch: 180, total rewards: 402.654789.3, cost: 0.025717, total money: 10402.654789\n",
      "epoch: 190, total rewards: 471.014775.3, cost: 0.022790, total money: 10471.014775\n",
      "epoch: 200, total rewards: 440.164797.3, cost: 0.022253, total money: 10440.164797\n"
     ]
    }
   ],
   "source": [
    "close = df.Close.values.tolist()\n",
    "initial_money = 10000\n",
    "window_size = 30\n",
    "skip = 1\n",
    "batch_size = 32\n",
    "agent = Agent(state_size = window_size, \n",
    "              window_size = window_size, \n",
    "              trend = close, \n",
    "              skip = skip, \n",
    "              batch_size = batch_size)\n",
    "agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "day 1: buy 1 unit at price 762.130005, total balance 9237.869995\n",
      "day 3: buy 1 unit at price 782.520020, total balance 8455.349975\n",
      "day 6, sell 1 unit at price 762.559998, investment 0.056420 %, total balance 9217.909973,\n",
      "day 10: buy 1 unit at price 764.479980, total balance 8453.429993\n",
      "day 12, sell 1 unit at price 760.539978, investment -2.808879 %, total balance 9213.969971,\n",
      "day 15, sell 1 unit at price 760.989990, investment -0.456518 %, total balance 9974.959961,\n",
      "day 21: buy 1 unit at price 750.500000, total balance 9224.459961\n",
      "day 22: buy 1 unit at price 762.520020, total balance 8461.939941\n",
      "day 23, sell 1 unit at price 759.109985, investment 1.147233 %, total balance 9221.049926,\n",
      "day 24: buy 1 unit at price 771.190002, total balance 8449.859924\n",
      "day 25, sell 1 unit at price 776.419983, investment 1.822898 %, total balance 9226.279907,\n",
      "day 26, sell 1 unit at price 789.289978, investment 2.347019 %, total balance 10015.569885,\n",
      "day 31: buy 1 unit at price 790.799988, total balance 9224.769897\n",
      "day 32, sell 1 unit at price 794.200012, investment 0.429947 %, total balance 10018.969909,\n",
      "day 36: buy 1 unit at price 789.909973, total balance 9229.059936\n",
      "day 37: buy 1 unit at price 791.549988, total balance 8437.509948\n",
      "day 38, sell 1 unit at price 785.049988, investment -0.615258 %, total balance 9222.559936,\n",
      "day 40, sell 1 unit at price 771.820007, investment -2.492575 %, total balance 9994.379943,\n",
      "day 46: buy 1 unit at price 804.789978, total balance 9189.589965\n",
      "day 47, sell 1 unit at price 807.909973, investment 0.387678 %, total balance 9997.499938,\n",
      "day 50: buy 1 unit at price 804.609985, total balance 9192.889953\n",
      "day 52, sell 1 unit at price 802.174988, investment -0.302631 %, total balance 9995.064941,\n",
      "day 53: buy 1 unit at price 805.020020, total balance 9190.044921\n",
      "day 54: buy 1 unit at price 819.309998, total balance 8370.734923\n",
      "day 56, sell 1 unit at price 835.669983, investment 3.807354 %, total balance 9206.404906,\n",
      "day 57, sell 1 unit at price 832.150024, investment 1.567176 %, total balance 10038.554930,\n",
      "day 59: buy 1 unit at price 802.320007, total balance 9236.234923\n",
      "day 60, sell 1 unit at price 796.789978, investment -0.689255 %, total balance 10033.024901,\n",
      "day 69: buy 1 unit at price 819.239990, total balance 9213.784911\n",
      "day 70: buy 1 unit at price 820.450012, total balance 8393.334899\n",
      "day 72, sell 1 unit at price 824.159973, investment 0.600555 %, total balance 9217.494872,\n",
      "day 73: buy 1 unit at price 828.070007, total balance 8389.424865\n",
      "day 74: buy 1 unit at price 831.659973, total balance 7557.764892\n",
      "day 75: buy 1 unit at price 830.760010, total balance 6727.004882\n",
      "day 77, sell 1 unit at price 828.640015, investment 0.998233 %, total balance 7555.644897,\n",
      "day 78, sell 1 unit at price 829.280029, investment 0.146126 %, total balance 8384.924926,\n",
      "day 79, sell 1 unit at price 823.210022, investment -1.016034 %, total balance 9208.134948,\n",
      "day 80, sell 1 unit at price 835.239990, investment 0.539263 %, total balance 10043.374938,\n",
      "day 81: buy 1 unit at price 830.630005, total balance 9212.744933\n",
      "day 82: buy 1 unit at price 829.080017, total balance 8383.664916\n",
      "day 83, sell 1 unit at price 827.780029, investment -0.343110 %, total balance 9211.444945,\n",
      "day 84, sell 1 unit at price 831.909973, investment 0.341337 %, total balance 10043.354918,\n",
      "day 89: buy 1 unit at price 845.619995, total balance 9197.734923\n",
      "day 91: buy 1 unit at price 848.780029, total balance 8348.954894\n",
      "day 92, sell 1 unit at price 852.119995, investment 0.768667 %, total balance 9201.074889,\n",
      "day 93, sell 1 unit at price 848.400024, investment -0.044771 %, total balance 10049.474913,\n",
      "day 102: buy 1 unit at price 829.559998, total balance 9219.914915\n",
      "day 103, sell 1 unit at price 838.549988, investment 1.083706 %, total balance 10058.464903,\n",
      "day 106: buy 1 unit at price 827.880005, total balance 9230.584898\n",
      "day 108, sell 1 unit at price 824.729980, investment -0.380493 %, total balance 10055.314878,\n",
      "day 110: buy 1 unit at price 824.320007, total balance 9230.994871\n",
      "day 111, sell 1 unit at price 823.559998, investment -0.092198 %, total balance 10054.554869,\n",
      "day 113: buy 1 unit at price 836.820007, total balance 9217.734862\n",
      "day 114: buy 1 unit at price 838.210022, total balance 8379.524840\n",
      "day 115, sell 1 unit at price 841.650024, investment 0.577187 %, total balance 9221.174864,\n",
      "day 116, sell 1 unit at price 843.190002, investment 0.594121 %, total balance 10064.364866,\n",
      "day 119: buy 1 unit at price 871.729980, total balance 9192.634886\n",
      "day 120, sell 1 unit at price 874.250000, investment 0.289083 %, total balance 10066.884886,\n",
      "day 139: buy 1 unit at price 954.960022, total balance 9111.924864\n",
      "day 141, sell 1 unit at price 971.469971, investment 1.728863 %, total balance 10083.394835,\n",
      "day 146: buy 1 unit at price 983.679993, total balance 9099.714842\n",
      "day 148, sell 1 unit at price 980.940002, investment -0.278545 %, total balance 10080.654844,\n",
      "day 155: buy 1 unit at price 939.780029, total balance 9140.874815\n",
      "day 157: buy 1 unit at price 950.630005, total balance 8190.244810\n",
      "day 161: buy 1 unit at price 952.270020, total balance 7237.974790\n",
      "day 162, sell 1 unit at price 927.330017, investment -1.324779 %, total balance 8165.304807,\n",
      "day 164, sell 1 unit at price 917.789978, investment -3.454554 %, total balance 9083.094785,\n",
      "day 165: buy 1 unit at price 908.729980, total balance 8174.364805\n",
      "day 166: buy 1 unit at price 898.700012, total balance 7275.664793\n",
      "day 167: buy 1 unit at price 911.710022, total balance 6363.954771\n",
      "day 168: buy 1 unit at price 906.690002, total balance 5457.264769\n",
      "day 169: buy 1 unit at price 918.590027, total balance 4538.674742\n",
      "day 170: buy 1 unit at price 928.799988, total balance 3609.874754\n",
      "day 171, sell 1 unit at price 930.090027, investment -2.329171 %, total balance 4539.964781,\n",
      "day 173: buy 1 unit at price 947.159973, total balance 3592.804808\n",
      "day 174, sell 1 unit at price 955.989990, investment 5.200666 %, total balance 4548.794798,\n",
      "day 175, sell 1 unit at price 953.419983, investment 6.088792 %, total balance 5502.214781,\n",
      "day 178: buy 1 unit at price 968.150024, total balance 4534.064757\n",
      "day 179, sell 1 unit at price 972.919983, investment 6.713753 %, total balance 5506.984740,\n",
      "day 180, sell 1 unit at price 980.340027, investment 8.122955 %, total balance 6487.324767,\n",
      "day 182, sell 1 unit at price 947.799988, investment 3.179869 %, total balance 7435.124755,\n",
      "day 183, sell 1 unit at price 934.090027, investment 0.569556 %, total balance 8369.214782,\n",
      "day 184, sell 1 unit at price 941.530029, investment -0.594403 %, total balance 9310.744811,\n",
      "day 185, sell 1 unit at price 930.500000, investment -3.888863 %, total balance 10241.244811,\n",
      "day 186: buy 1 unit at price 930.830017, total balance 9310.414794\n",
      "day 187, sell 1 unit at price 930.390015, investment -0.047270 %, total balance 10240.804809,\n",
      "day 191: buy 1 unit at price 926.789978, total balance 9314.014831\n",
      "day 192, sell 1 unit at price 922.900024, investment -0.419723 %, total balance 10236.914855,\n",
      "day 194: buy 1 unit at price 914.390015, total balance 9322.524840\n",
      "day 195: buy 1 unit at price 922.669983, total balance 8399.854857\n",
      "day 197, sell 1 unit at price 926.960022, investment 1.374688 %, total balance 9326.814879,\n",
      "day 199, sell 1 unit at price 910.669983, investment -1.300573 %, total balance 10237.484862,\n",
      "day 200: buy 1 unit at price 906.659973, total balance 9330.824889\n",
      "day 201: buy 1 unit at price 924.690002, total balance 8406.134887\n",
      "day 202: buy 1 unit at price 927.000000, total balance 7479.134887\n",
      "day 203: buy 1 unit at price 921.280029, total balance 6557.854858\n",
      "day 204: buy 1 unit at price 915.890015, total balance 5641.964843\n",
      "day 205, sell 1 unit at price 913.809998, investment 0.788612 %, total balance 6555.774841,\n",
      "day 207, sell 1 unit at price 929.570007, investment 0.527745 %, total balance 7485.344848,\n",
      "day 208: buy 1 unit at price 939.330017, total balance 6546.014831\n",
      "day 210: buy 1 unit at price 928.450012, total balance 5617.564819\n",
      "day 212, sell 1 unit at price 935.950012, investment 0.965481 %, total balance 6553.514831,\n",
      "day 213: buy 1 unit at price 926.500000, total balance 5627.014831\n",
      "day 214: buy 1 unit at price 929.080017, total balance 4697.934814\n",
      "day 216: buy 1 unit at price 935.090027, total balance 3762.844787\n",
      "day 217, sell 1 unit at price 925.109985, investment 0.415721 %, total balance 4687.954772,\n",
      "day 218, sell 1 unit at price 920.289978, investment 0.480403 %, total balance 5608.244750,\n",
      "day 219, sell 1 unit at price 915.000000, investment -2.590146 %, total balance 6523.244750,\n",
      "day 221, sell 1 unit at price 931.580017, investment 0.337122 %, total balance 7454.824767,\n",
      "day 222, sell 1 unit at price 932.450012, investment 0.642203 %, total balance 8387.274779,\n",
      "day 223: buy 1 unit at price 928.530029, total balance 7458.744750\n",
      "day 224, sell 1 unit at price 920.969971, investment -0.872911 %, total balance 8379.714721,\n",
      "day 226: buy 1 unit at price 944.489990, total balance 7435.224731\n",
      "day 227: buy 1 unit at price 949.500000, total balance 6485.724731\n",
      "day 229, sell 1 unit at price 953.270020, investment 1.944197 %, total balance 7438.994751,\n",
      "day 230, sell 1 unit at price 957.789978, investment 3.151212 %, total balance 8396.784729,\n",
      "day 232: buy 1 unit at price 969.960022, total balance 7426.824707\n",
      "day 233, sell 1 unit at price 978.890015, investment 3.642180 %, total balance 8405.714722,\n",
      "day 236: buy 1 unit at price 989.250000, total balance 7416.464722\n",
      "day 238, sell 1 unit at price 989.679993, investment 4.231700 %, total balance 8406.144715,\n",
      "day 239, sell 1 unit at price 992.000000, investment 2.272256 %, total balance 9398.144715,\n",
      "day 240, sell 1 unit at price 992.179993, investment 0.296183 %, total balance 10390.324708,\n"
     ]
    }
   ],
   "source": [
    "states_buy, states_sell, total_gains, invest = agent.operate(initial_money = initial_money)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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L5988glQGNT56quv6Nu3b4XX8Gh8/sHq168fULj61vnnnw9Ap06diIiICAQk9uzZw9ixY/nll1947bXXuP322znrrLOYO3cuZ511ViBo4p9vsKKioujXrx8vvvgiABkZGVx44YV8/vnn5R7ncDgCK9Ud7vXXX+eVV14BIDMzk88//7zEZwpV+w5+++23PPLII3g8Hnw+Hx988AGnnnoqAI899hg//PADS5cu5YQTTih2nk8++STwvYPCANCJJ54IwG+//UbTpk055phjSn0/KSkp/Oc//+Hiiy/GGIMxBsuysG2bvLy8cq+TiIhIbeAM9QRERETqkpEjRzJjxgyefPJJFi5cyEMPPcSTTz6J1+tlzpw5gQdc/34LFixgyJAhjBo1irCwMLp160bXrl1JTEwss8ny6aefztSpU5k2bRoREREcf/zxREZGAoUZQnPmzKFRo0ZERUVx8sknB7JzKuJ0Ornjjjv461//itPpxLIsHn744RLzmDBhAtu3b2fy5Mk4HA6OP/545s2bB8Att9zC3LlzSUhIwOFwMH/+fNq2bQvAU089xQMPPEBubi7R0dE8+uijQGEwJT4+nmeffZYOHTrw0EMPcd1112FZFk2bNuWZZ54hMjKSxx9/HGMM//d//8f//d//AXDMMcfwr3/9q8L3lpiYWOLBvUePHsyZM4dLLrkEt9tN3759AyV4jz76KA888AAJCQnYts2oUaMCWSR33nknvXv35sILLyxxnqPx+VfG+eefz8KFCwOBsLCwMBYuXMi8efN4/vnn8Xg8XH/99QwYMIATTjiB77//ntGjRxMZGUnbtm0DTaYPfV/B+vvf/86DDz7IuHHjKCgoYOzYsYwfP56dO3eWeUzXrl0JDw9nypQpvPXWW8Wyj+bPn88999wTKCucOnUq5513HlD8M6nKd/DKK6/k4YcfJi4uDtu2Oemkk7j55ptJSkripZdeom3btlx22WWBucycOZPJkyeX+/63bdtG+/bty9z+2GOPceONN+JwOIiKimLYsGGcd955tG7dmoULF1ZwdUVERELPMpXJiRYREZEat379en788UdmzpwJwIsvvsjPP/8c1OpqcuRWrVrF9u3bSw0YiYiIiDQUyjASERGpZTp16sRzzz3HkiVLsCyLtm3b8uCDD4Z6Wg1GWlpasebZIiIiIg2RMoxERERERERERKQY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vt4ntm2Vm5wT1Cpph+rbty9bt24lMTERr9fLhx9+yODBg2nfvj3h4eGsWbMGgPfee4/BgwfjcrkYOHAgH3/8MQAJCQkMHjy4im9HREREREREROTIBErSwlWSVpZKZxiFh4czf/58rrvuOvLz8zn77LMZOXIkAH//+9+56667yMrKolevXsycOROAe++9l9tuu42nn36atm3b8vjjj1fvuxARERERERERCZI/YGSph1GZgg4YrVixIvDn008/nffff7/EPj169ODtt98u8Xr79u1ZvHhxFacoIiIiIiIiIlJ91PS6YpUuSRMRERERERERqcsOBowiQzyT2ksBIxERERERERFpUJRhVDEFjERERERERESkQVHAqGKVbnotIiIiIiIiIlIV06ZNYPPmTRXu1717D958M6HG5mHyFTCqiAJGIiIiIiIiIlIjgg0QHcrlctG3b/8amlEhX14uoIBReVSSJiIiIiIiIiI1ok+ffrhcrkodY9s28fGza2hGhXx5+YXnClfAqCwKGImIiIiIiIhIjYiPn41tBx96cNo2w3v3oWXLVjU4K/UwCoYCRiIiIiIiIiJSI2JiYhk/fmLQWUa2MYzzeCnYvbtG5+VTD6MKqYeRiIiIiIiIiFRJdlY+n723keFxPWkUFValnkV+Ttvm3E5diHaFkf3LOsLbt6/m2RYyXi+moAAsCys8vEbOUR8ow0hEREREREREqmTNqkT27Ehn9apEoGo9i/wcLhfxV88BIOeX9dU2x8MFsovCw7Esq8bOU9cpYCQiIiIiIiIilZadlc+m9ckAbFqfRE5WQaV6Ftm2jdNZGFxyuVzExU3i2NPPAssi9/ffAn2Gqpt/XEvlaOVSwEhEREREREREKm3NqkSMMQAYY1i9KjHonkUul4sxY8bjcBSGJfwrozmioojo1Bnj8ZCzaWONzFsNr4OjgJGIiIiIiIiIVIo/u8jnLQwY+bymUllGtm1z/fU3M378RCzLIi5uEq1axQDQuPeJheeoobK0gwGjyBoZv75QwEhEREREREREKmXNqkSMz1fsNeP1sXpVItEOJ0OP6YDzsP5ALpeLLl26FgsQxcfPpn//AcTHzw7s16h3HwCyf1kXyGCqTsowCo4CRiIiIiIiIiIStEB2UfF4ET4DG3/cye/zHmZC46bYhwWMbNvm4Yf/VixAFBMTy6JFrwSyiwAi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W5kwIiIiIgqEBSMiIiKasLhLGhEREVFgLBgRERHRhOVmwoiIiIgoIBaMiIiIaEJS3G7IAwOAIEA0GBK9HCIiIqKkwoIRERERTUhuq2fgtWgwQBD5IxERERHRcPzpiIiIiCYk3/witqMRERERjcKCEREREU1Ivh3SOPCaiIiIaBQWjIiIiGhCYsKIiIiIKDgWjIiIiGhC4g5pRERERMGxYEREREQTki9hxJY0IiIiolFYMCIiIqIJSS0YiUwYEREREY3CghERERFNSGxJIyIiIgqOBSMiIiKakNiSRkRERBQcC0ZEREQ0IcncJY2IiIgoKBaMiIiIaELytaQxYUREREQ0CgtGRERENCH5WtKyWTAiIiIiGokFIyIiIppwFEWB22oFAIhMGBERERGNwoIRERERTTiy3Q643RAyMiBqtYleDhEREVHSYcGIiIiIJhyZO6QRERERhcSCEREREU04bks/AO6QRkRERBQMC0ZEREQ04XCHNCIiIqLQWDAiIiKiCce3Q5oxK8ErISIiIkpOLBgRERHRhOO2eHdIY0saERERUUAsGBEREdGE42tJM2YneCVEREREyYkFIyIiIppw3NwljYiIiCgkFoyIiIhowpGtnGFEREREFIqU6AUQERERxdu2bXfg1Km60XfUHPT7sKysHDt27B6nVRERERElLyaMiIiIKO1VVFRCq9WGPEar1WLJkqXjtCIiIiKi5MaCEREREaW96urtEMXQP/aIoojq6u3jtCIiIiKi5MaCEREREaU9k8mMTZu2BE0ZabVabN5chaIi0zivjIiIiCg5sWBEREREac9qcWBa0fUQhMA/+jBdREREROSPBSMiIiJKe7X7G2DpFrFi0WpIguB3H9NFRERERKOxYERERERpzWpxoO5oGwBgTulNEOBfMGK6iIiIiGg0KdELICIiIooleXAQjf/3abgt/dDPnYdjUjkUt6dIZNDnYtncFfjg/IdwOp1MFxEREREFwYQRERERpRXbmdNwXGyAq6sLHTWHUd/ihqx47lNECeWLPuGbZcR0EREREVFgLBgRERFRWrGdqgMAZK+6Fq3X3AVF9P9xx6DPxVXLPgZBEJguIiIiIgqCLWlERESUVga8BSPN4hU4/64VCmS/+2W3gjmTPwZrxWWmi4iIiIiCYMKIiIiI0obscMB+4TwgCDjRnglFUQIeZ9Dn4sG7v810EREREVEQLBgRERFR2rCdOwu43VCmzcXpk52Q3YELRrJbQd3RVgxYBsd5hURERESpgQUjIiIiShvq/KILBUuCpotUiqKgZn/DeCyLiIiIKOWwYERERERpw3b6FACgGzlB00Uq2a2gtal3PJZFRERElHI49JqIiIjSguxwwFZ/DhAEfOKBZdAYshK9JCIiIqKUxYQRERERpQV7/TnA7UbG1GksFhERERFdIRaMiIiIKC0MeOcX6eeVJXglRERERKmPBSMiIiJKC+r8IkNZeYJXQkRERJT6WDAiIiKilCcPDnpa0gQB+rnzEr0cIiIiopTHghERERGlPHv9OSguFzKmTIHGaEz0coiIiIhSHgtGRERElPJ884vYjkZEREQUEywYERERUcpT5xfp57FgRERERBQLLBgRERFRSpOdg7CfOwsAMHCHNCIiIqKYYMGIiIiIUtpgSwsUlwu6kkmcX0REREQUIywYERERUUpzdXYAALRmc4JXQkRERJQ+WDAiIiKilObs7AQASIWFCV4JERERUfpgwYiIiIhSmlow0hYUJXglREREROmDBSMiIiJKab6WNCaMiIiIiGKGBSMiIiJKaWxJIyIiIoo9FoyIiIgopbnUlrRCtqQRERERxQoLRkRERJSyZIcDbks/BEmCJicn0cshIiIiShssGBEREVHK8rWjFRRCEPljDREREVGs8CcrIiIiSlmuLg68JiIiIooHFoyIiCfNdoMAACAASURBVIgoZXHgNREREVF8sGBEREREKYsDr4mIiIjigwUjIiIiSlnOTk9LmlTAhBERERFRLEmJXgAREVGy27btDpw6VRf2uLKycuzYsXscVkQqpy9hxIIRERERUSwxYURERBRGRUUltFptyGO0Wi2WLFk6TisiFVvSiIiIiOKDBSMiIqIwqqu3QwyzZbsoiqiu3j5OKyIAUFwuuHq6AUGAlJ+f6OUQERERpRUWjIiIiMIwmczYtGlL0JSRVqvF5s1VKCoyjfPKJjZXdzegKJDy8iFI7LInIiIiiiUWjIiIiCIQKmXEdFFi+AZec34RERERUcyxYERERBQBNWUkaTR+tzNdlDi+gdfcIY2IiIgo5q6oYLRnzx7cfvvtuP322/H9738fAPDv//7vuPHGG7F582Zs3rwZL730EgDg5MmTqKqqwrp16/DEE0/A5XJd+eqJiIjGgdXi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C1ruiy++SJIMDAzkzjvvzKuvviov8JvXX389u3btSmdnZ5Lk6NGjufLKK9PV1ZVarZa+vr7s378/J0+ezLlz53L99dcnSbZt2yYzVMb0nIyPj+fUqVN56qmn0tfXl71792ZqaqppfmC+6+joyJNPPpmFCxemvb09V199dY4fP26fwDQzZeXUqVOV3ym1Vg9QBadPn05HR0fjubOzM0ePHm3hRDA3/PDDD7npppvy7LPPpl6vp7+/P7fffru8QJLnnnuu9DzTLhkeHv6v9zs6OjI8PDxrc0IrTc/J6OhoNmzYkF27dmXZsmV5+OGH88Ybb2Tp0qUz5gfmu2uuuabx+vjx43nnnXfywAMP2CcwzUxZGRoaykcffVTpneKE0SyYmppKW1tb47koitIzVNUNN9yQwcHBLFu2LCtWrMj27duzd+9eeYEZNNsldgyc19XVlZdffjmdnZ1ZsmRJduzYkQ8++EBOqLxjx45lYGAgTzzxRLq6uuwTaOLCrFx11VWV3ykKo1mwevXqjIyMNJ5HRkYaR6ehyj7++OMcOnSo8VwURdasWSMvMINmu2T6+6OjozJDZX3++ed59913G89FUaRWq/lbjEo7fPhwHnzwwTz++OO5++677RNoYnpW7BSF0ay4+eabc+jQoZw5cybj4+M5cOBANm7c2OqxoOV+/PHHDA4OZmJiImNjY3nzzTfzwgsvyAvM4LrrrsuXX36Zr776Kr/88kvefvvtbNy4MWvWrMmiRYty+PDhJMlbb70lM1RWURR5/vnn8/3336der+e1117Lrbfe2jQ/MN99++23eeSRR7Jnz5709PQksU9gJjNlxU5xh9GsWLVqVR577LH09/enXq9n+/btufbaa1s9FrTc5s2bc+TIkdx1112ZmprK/fffnxtvvFFeYAaLFi3K7t278+ijj2ZiYiKbNm3KbbfdliTZs2dPnnnmmYyNjWX9+vXp7+9v8bTQGuvWrctDDz2U++67L5OTk+nu7k5vb2+SNM0PzGevvPJKJiYmsnv37sZ79957r30C0zTLStV3SltRFEWrhwAAAABg7vCVNAAAAABKFEYAAAAAlCiMAAAAAChRGAEAAABQojACAAAAoERhBAAAAECJwggAAACAEoURAAAAACX/ARQzWXPhT99bAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1440x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize = (20,10))\n",
    "plt.plot(close, color='r', lw=2.)\n",
    "plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
    "plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
    "plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "I'm learning\n"
     ]
    }
   ],
   "source": [
    "zhangsan = \"I'm learning\"\n",
    "\n",
    "def fun():\n",
    "    zhangsan = 3\n",
    "    print(zhangsan)\n",
    "    \n",
    "fun()\n",
    "print(zhangsan)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
